<html>
<head><meta charset="utf-8"><title>self-profiler and parallel queries · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html">self-profiler and parallel queries</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="156789346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789346">(Jan 24 2019 at 17:19)</a>:</h4>
<p>I'm looking at changing how the self-profiler records query execution time to be per-query instead of per-category to allow us to show more detailed profiling data at the query level. As part of this, I think it would be great to also support the parallel queries option (currently, using both <code>-Z self-profile</code> and <code>-Z query-threads=n</code> results in an <a href="https://github.com/rust-lang/rust/issues/54141" target="_blank" title="https://github.com/rust-lang/rust/issues/54141">ICE</a>). One obvious option would be to make the storage use atomics. Another option might be to have some kind of TLS/task context which would record the data without using atomics. Perhaps there's a third option?</p>
<p>Does anyone have an opinion on which would be the better path to go down? cc <span class="user-mention" data-user-id="116466">@Zoxc</span></p>



<a name="156789626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789626">(Jan 24 2019 at 17:23)</a>:</h4>
<p>You could use a per thread list of events. I think the more important question is how to visualize things (and what to record).</p>



<a name="156789739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789739">(Jan 24 2019 at 17:25)</a>:</h4>
<p>I'd like to remove query cache hits from the results without <code>debug_assertions</code>, mostly because that is in the query hot path and isn't affected by the time things take (so enabling <code>debug_assertions</code> doesn't affect the results, assuming we don't run different queries with <code>debug_assertions</code>...)</p>



<a name="156789857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789857">(Jan 24 2019 at 17:27)</a>:</h4>
<blockquote>
<p>You could use a per thread list of events.</p>
</blockquote>
<p>Is there an api or something I should use? Or can I just use regular TLS stuff?</p>



<a name="156789874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789874">(Jan 24 2019 at 17:27)</a>:</h4>
<p>(I've never used Rayon before so I don't know if there's a better way of doing this in that library)</p>



<a name="156789924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789924">(Jan 24 2019 at 17:28)</a>:</h4>
<p>I was expecting per-thread-lists of events</p>



<a name="156789990"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156789990" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156789990">(Jan 24 2019 at 17:28)</a>:</h4>
<p>I would probably just use regular TLS</p>



<a name="156790010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790010">(Jan 24 2019 at 17:28)</a>:</h4>
<p>though how to "sweep all the threads"...? I can't remember but I think we make a separate "tcx" per thread or something?</p>



<a name="156790026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790026">(Jan 24 2019 at 17:29)</a>:</h4>
<p>(mm perhaps not?)</p>



<a name="156790038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790038">(Jan 24 2019 at 17:29)</a>:</h4>
<p>but basically I wonder if there is some per-thread state we can already build on (and if not, I suspect we may want it)</p>



<a name="156790135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790135">(Jan 24 2019 at 17:30)</a>:</h4>
<p>Does Rayon send a shutdown message to each thread to get them to terminate or does it just <code>kill</code> them from the outside or something?</p>



<a name="156790157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790157">(Jan 24 2019 at 17:30)</a>:</h4>
<p>it cerainly doesn't kill them</p>



<a name="156790164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790164">(Jan 24 2019 at 17:30)</a>:</h4>
<p>Maybe there's a way to send a message to each thread to get them to consolidate the data</p>



<a name="156790168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790168">(Jan 24 2019 at 17:30)</a>:</h4>
<p>I don't remember exactly what hooks there are</p>



<a name="156790180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790180">(Jan 24 2019 at 17:30)</a>:</h4>
<p>Ok. I guess I should research Rayon more then :)</p>



<a name="156790183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790183">(Jan 24 2019 at 17:30)</a>:</h4>
<p>that said</p>



<a name="156790207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790207">(Jan 24 2019 at 17:31)</a>:</h4>
<p>I feel like it'd be nice if we could make this distinct from rayon</p>



<a name="156790212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790212">(Jan 24 2019 at 17:31)</a>:</h4>
<p>i'm imagining something like this</p>



<a name="156790218"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790218" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790218">(Jan 24 2019 at 17:31)</a>:</h4>
<p>you have some thread-local state</p>



<a name="156790232"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790232" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790232">(Jan 24 2019 at 17:31)</a>:</h4>
<p>if it is not initialized for a given thread, you create a <code>Arc&lt;ThreadLocalState&gt;</code> and store it in the compiler</p>



<a name="156790240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790240">(Jan 24 2019 at 17:31)</a>:</h4>
<p>you also keep one handle for your current thread</p>



<a name="156790245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790245">(Jan 24 2019 at 17:31)</a>:</h4>
<p>I guess that would still have to use atomics</p>



<a name="156790250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790250">(Jan 24 2019 at 17:32)</a>:</h4>
<p>but they would be uncontended operations</p>



<a name="156790301"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790301" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790301">(Jan 24 2019 at 17:32)</a>:</h4>
<p>I have a <code>WorkerLocal</code> type, which allows you to have thread local state and collect it up after</p>



<a name="156790459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790459">(Jan 24 2019 at 17:34)</a>:</h4>
<p>You need ownership to do so though. So you can't do that in <code>GlobalCtxt</code> with safe code (since I removed the <code>'a</code> lifetime).</p>



<a name="156790503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790503">(Jan 24 2019 at 17:36)</a>:</h4>
<p>I also want to add a <code>SharedWorkerLocal</code> which would allow you to iterate over everything without ownership</p>



<a name="156790676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790676">(Jan 24 2019 at 17:38)</a>:</h4>
<p>I wouldn't worry too much about this though. Just a single global list with a mutex should be fine</p>



<a name="156790700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790700">(Jan 24 2019 at 17:38)</a>:</h4>
<p>Ok. I'll start with that and then we can optimize later.</p>



<a name="156790701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790701">(Jan 24 2019 at 17:38)</a>:</h4>
<p>Thanks!</p>



<a name="156790764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790764">(Jan 24 2019 at 17:40)</a>:</h4>
<p>Maybe use <code>HashMap&lt;ThreadId, ProfilingState&gt;</code> so making it thread local later will be easy</p>



<a name="156790808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790808">(Jan 24 2019 at 17:40)</a>:</h4>
<p>Will do</p>



<a name="156790820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790820">(Jan 24 2019 at 17:40)</a>:</h4>
<p>BTW, are there any docs describing how parallel queries works? Or the vision for how they're supposed to work?</p>



<a name="156790948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790948">(Jan 24 2019 at 17:42)</a>:</h4>
<p>/me notes the topic about design docs in all hands discussion :)</p>



<a name="156790984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156790984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156790984">(Jan 24 2019 at 17:43)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> That's about writing more docs right? I'm not missing some already existing docs? :)</p>



<a name="156791084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156791084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156791084">(Jan 24 2019 at 17:45)</a>:</h4>
<p>Last I checked there wasn't anything about parallel queries in the rustc guide.</p>



<a name="156799311"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156799311" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156799311">(Jan 24 2019 at 19:32)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> correct =)</p>



<a name="156799330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156799330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156799330">(Jan 24 2019 at 19:32)</a>:</h4>
<p>I'm basically saying "I want to try and do more design docs so that the answer is 'yes' and not 'no'"</p>



<a name="156799339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156799339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156799339">(Jan 24 2019 at 19:32)</a>:</h4>
<p>that said, there were some internals threads that may be helpful</p>



<a name="156799365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156799365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156799365">(Jan 24 2019 at 19:33)</a>:</h4>
<p>this is probably the main one: <a href="https://internals.rust-lang.org/t/parallelizing-rustc-using-rayon/6606" target="_blank" title="https://internals.rust-lang.org/t/parallelizing-rustc-using-rayon/6606">https://internals.rust-lang.org/t/parallelizing-rustc-using-rayon/6606</a></p>



<a name="156801025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156801025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156801025">(Jan 24 2019 at 19:53)</a>:</h4>
<p>Thanks for the pointer! There's a lot of good info in that thread</p>



<a name="156837350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156837350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156837350">(Jan 25 2019 at 08:30)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span>  I have a PR to the rustc-guide that will add a little bit about parallel queries: <a href="https://github.com/rust-lang/rustc-guide/pull/270/files#diff-7b2b8e856b6cf936c97794a1cc7ec846R212" target="_blank" title="https://github.com/rust-lang/rustc-guide/pull/270/files#diff-7b2b8e856b6cf936c97794a1cc7ec846R212">https://github.com/rust-lang/rustc-guide/pull/270/files#diff-7b2b8e856b6cf936c97794a1cc7ec846R212</a></p>



<a name="156837393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156837393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156837393">(Jan 25 2019 at 08:30)</a>:</h4>
<p>that does not go into how it's concretely implemented though</p>



<a name="156855649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/self-profiler%20and%20parallel%20queries/near/156855649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/self-profiler.20and.20parallel.20queries.html#156855649">(Jan 25 2019 at 14:24)</a>:</h4>
<p>Thanks <span class="user-mention" data-user-id="124287">@mw</span>!! <span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>